package br.ufrpe.bsi.pvs.xml;

import java.net.URL;

import org.jdom2.Document;
import org.jdom2.Element;

import br.ufrpe.bsi.pvs.xml.request.RequestProcessor;
import br.ufrpe.bsi.pvs.xml.request.RequestProcessorFactory;

/**
 * interpretador de requerimentos (requests)
 * 
 * processa o documento e extrai dele o tipo de Resquest (add, list, query ou login)
 * e o direciona para o processador correto.
 *
 */
public class RequestParserXML extends ParserXML {

	public static final RequestParserXML INSTANCE = new RequestParserXML();

	private RequestParserXML() {
	}

	@Override
	/** processa o documento */
	public void process(Document doc) {
		// extrai o tipo de request
		Element root = doc.getRootElement();
		Element request = root.getChild(XMLUtil.ELEM_REQUEST);
		String requestType = request.getAttribute(XMLUtil.ATTR_NAME).getValue();
		
		// atraves do tipo de request, pede para a Fabrica de 
		// processadores de request retornar a instancia correta
		// do interpretador necessario para processar a request.
		RequestProcessor process = RequestProcessorFactory
				.getRequestProcessor(requestType);

		// processa a request
		process.process(request);
	}

	@Override
	public URL getXMLFile() {
		return getClass().getResource(XMLUtil.REQUEST_FILE);
	}

}
